The range of functionality available to users of computing devices is ever increasing. From traditional desktop personal computers (PCs) and laptops to tablet PCs and personal digital assistants (PDAs), computing devices may be configured to provide functionality in different environments. Additionally, the range of target entities, and particularly rendering devices, which may be utilized by these computing devices also continues to increase. For example, a computing device configured as a desktop PC may include a display device that provides an output for viewing by a user and a color printer for printing color images to a printable medium.
The computing device may communicate with each of the target entities through use of a respective device driver. A device driver, when executed, is utilized to convert input/output instructions received from the computing device into a form that is compatible with the respective target entity. Likewise, the device driver, when executed, may be utilized to convert responses to the input/output instructions from the respective target entity into a form that is compatible with the computing device. Because of the wide range of computing devices and target entities that are available to users, however, manufacturers of computing devices and target entities are faced with the challenge of deriving device drivers for each particular environment that may be encountered by their products. For example, a manufacturer of a printer may be required to develop a device driver for each particular configuration of computing device that may utilize the printer. Further, each device driver that is developed for a particular computing device may be inflexible in that the device driver is not able to support changing capabilities that may be provided through further development of the computing device and/or the printer. Therefore, a new device driver was traditionally required when additional functionality was added to the computing device and/or the printer.
Accordingly, there is a continuing need for systems and methods that support various computing device and target entity capabilities.